package com.yun.blog.service;

import com.yun.blog.bean.response.OauthResponse;
import com.yun.blog.bean.response.OauthUserInfo;

import java.util.HashMap;

/**
 * @author : simple
 * @title : QQOauthService
 * @projectName : dantouBlog-back
 * @description : 登录策略接口
 * @email : yun_simple@163.com
 * @date : 2023/5/21下午9:31
 */

public interface OauthService {
    /**
     * 获取授权的url
     *
     * @return String
     * @author yun
     * @date 2023/6/6 上午2:18
     */
    String getOauthUrl();

    /**
     * 通过授权页面的授权后的code获取AccessToken
     *
     * @param code 授权页面回调的code
     * @return OauthResponse
     * @author yun
     * @date 2023/6/6 上午2:18
     */
    OauthResponse code2Token(String code);


    /**
     * 通过 AccessToken 获取用户信息
     * @param oauthResponse 授权返回的token等数据
     * @return OauthUserInfo
     * @author yun
     * @date 2023/6/6 上午2:20
     */
    OauthUserInfo getUserInfo(OauthResponse oauthResponse);


    /**
     * 三方登录实现
     *
     * @param code 授权页面跳转重定向地址获取到的code
     * @return 登录成功的 token userinfo 等信息
     * @author yun
     * @date 2023/6/6 上午2:21
     */
    HashMap<String, Object> login(String code);
}
